// 封装 axios  做一些公共的配置，以及错误统一处理
import axios from 'axios';

axios.defaults.baseURL = 'http://localhost:3000';   // 部署上线只需改这个就行
axios.defaults.headers.post['Content-Type'] = 'application/json';   // 响应头 告诉浏览器后端返回的数据格式是 json 格式

import { showToast } from 'vant';

// 请求拦截  （带个 token 过去）
axios.interceptors.request.use(req => {
  // 在发送请求之前做些什么 
  let token = localStorage.getItem('token') || sessionStorage.getItem('token')
  if (token) {
    req.headers.Authorization = `${token}`
  }
  return req
})

// 响应拦截
axios.interceptors.response.use(res => {
  if (res.status !== 200) {   // 程序性错误
    showToast('服务器异常');
    return Promise.reject(res)
  } else {

    if (res.data.code === 401) {  // 没有登录
      showToast(res.data.msg);
      return Promise.reject(res)
    }

    if (res.data.code !== 200) {  // 业务错误
      showToast(res.data.msg)
      return Promise.reject(res)
    }

    return res.data
  }
})

export default axios

